package io;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 通过提高每次读写的数量,减少实际读写的次数,可以提高读写效率.
 * 单字节读写是一种随机读写形式.而一组一组字节的读写是块读写形式.
 */
public class CopyDemo2 {
    public static void main(String[] args) throws IOException {
        //使用块读写形式完成文件复制

        FileInputStream fis = new FileInputStream("acdc.mp4");
        FileOutputStream fos = new FileOutputStream("abdc1.mp4");

        /*
            流提供了块读写的方法
            int read(byte[] data)
            一次性从文件中读取给定的字节数组总长度的字节量,并存入到该数组中.
            返回值为实际读取到的字节量.若返回值为-1,则表示到了文件末尾.
         */

        int len;
        byte[] data = new byte[1024*10];//10kb
        long start = System.currentTimeMillis();
        while ((len = fis.read(data)) != -1){
            fos.write(data,0,len);
        }
        long end = System.currentTimeMillis();
        System.out.println((end-start)+"ms");
        fis.close();
        fos.close();
    }
}
